package org.tissou.server.Base;

import org.tissou.server.Utils.Variables_Globales;
import org.tissou.server.Operations.Operation_Depense;
import org.tissou.server.importer.xls.ExcelImporter;

import java.util.logging.Logger;
import java.util.Date;
import java.util.List;
import java.util.ArrayList;

import org.tissou.client.Services.Compte;
import org.tissou.client.Services.Dette;

/**
 * Created by IntelliJ IDEA.
 * User: Claire
 * Date: 22-Nov-2008
 * Time: 14:13:29
 * To change this template use File | Settings | File Templates.
 */
public class Main {
    private static final Logger LOG = Logger.getLogger(Main.class.getName());
    public static void  main(String[] args) throws Exception {
      Date date = new Date();
      Proprietaire.CreerProprietaire("Perrine");
      Proprietaire.CreerProprietaire("Pote");
      Proprietaire.CreerProprietaire("Ugo et Genevieve");

      new ExcelImporter().importer();
//
//      Variables_Globales.Tout.ajouterCategorieCommeEnfant("Dettes", InterfaceMySQL.getInstance());
//      Variables_Globales.Tout.rechercherCategorieDansDescendance("Dettes").ajouterCategorieCommeEnfant(
//          "Remboursement", InterfaceMySQL.getInstance());
//      Variables_Globales.Tout.rechercherCategorieDansDescendance("Dettes").ajouterCategorieCommeEnfant(
//          "Pret", InterfaceMySQL.getInstance());
//
// // Pour creer et enregistrer un remboursement (e.g. je rembourse 123 euros a manu en liquide)
//      Compte Rembourseur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire")
//          .ObtenirCompte("Portefeuille (euro)");
//      Compte Rembourse = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Manu")
//          .ObtenirCompte("Portefeuille (euro)");
//      Operation_Remboursement operation = new Operation_Remboursement(date, Rembourseur, Rembourse, 123f, true);
//      operation.Entrer_Transactions();

// Pour creer et enregistrer une operation de pret (e.g. : je prete 100 pounds a manu de mon compte barclays a son compte
// HSBC
//      Compte Preteur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire").
//          ObtenirCompte("Barclays (pound)");
//      Compte Emprunteur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Manu").
//          ObtenirCompte("HSBC (pound)");
//      Operation_Pret operation = new Operation_Pret(date, Preteur, Emprunteur, 100f, true);
//      operation.Entrer_Transactions();

// Pour creer une operation de transfert personel de monnaie (e.g. je retire de l'argent en pound depuis mon compte
// a la BNP qui est en euro)
//      Compte compte_debourseur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire")
//          .ObtenirCompte("BNP (euro)");
//      Compte compte_receveur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire")
//          .ObtenirCompte("Portefeuille (pound)");
//      Operation_TransfertMonnaie_Personnel operation = new Operation_TransfertMonnaie_Personnel(date,
//          compte_debourseur, compte_receveur, 1000f, 700f, true);
//      operation.Entrer_Transactions();

//Pour effectuer un transfert de dette d'une monnaie a une autre.
//      Proprietaire crediteur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Manu");
//      Proprietaire debiteur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire");
//      Monnaie precedente = Variables_Globales.ListeMonnaies.ObtenirMonnaie("pound");
//      Monnaie suivante = Variables_Globales.ListeMonnaies.ObtenirMonnaie("euro");
//
//      Operation_TransfertMonnaie_Dette operation = new Operation_TransfertMonnaie_Dette(date, crediteur, debiteur, precedente,
//          suivante, 700f, 1000f, true);
//      operation.Entrer_Transactions();

// Pour effectuer un virement interne (meme proprietaire, meme monnaie). e.g. Claire retire 100 � de
// son compte Barclays
//      Compte compte_debourseur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire")
//          .ObtenirCompte("Barclays (pound)");
//      Compte compte_receveur = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire")
//          .ObtenirCompte("Portefeuille (pound)");
//      Operation_VirInterne operation = new Operation_VirInterne(date, compte_debourseur,
//          compte_receveur, 100f, true);
//      operation.Entrer_Transactions();

// Pour creer une operation depense:
// Claire va a Tesco et depense 20.
// Manu doit 10 a Claire
// Ronan doit 5 a Claire
//      Proprietaire claire = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire");
//      Compte compte = claire.ObtenirCompte("Portefeuille (pound)");
//      Proprietaire manu = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Manu");
//      Proprietaire ronan = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Ronan");
//      Categorie categorie = Variables_Globales.Tout.rechercherCategorieDansDescendance("Tesco");
//      String libelle = "Bouffe de ouf";
//
//      List<Dette> dettes = new ArrayList<Dette>();
//
//      Dette dettemanu = Dette.NouvelleDette(claire, manu, 10f);
//      dettes.add(dettemanu);
//      Dette detteronan = Dette.NouvelleDette(claire, ronan, 5f);
//      dettes.add(detteronan);
//
//      Operation_Depense operation = new Operation_Depense(date, compte, categorie, libelle, 20f, false, dettes);
//      operation.Entrer_Transactions();

// Pour creer une operation recette:
// Claire recoit 90 euros de Ryanair (parce qu'ils avaient une heure de retard sur le vol) :p.
// Claire en doit la moitie a Manu

//      Proprietaire claire = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Claire");
//      Compte compte  = claire.ObtenirCompte("Barclays (pound)");
//      Proprietaire manu = Variables_Globales.ListeProprietaire.ObtenirProprietaire("Manu");
//
//      Categorie categorie = Variables_Globales.Tout.rechercherCategorieDansDescendance("Vacances");
//      String libelle = "Ryanair";
//      List<Dette> dettes = new ArrayList<Dette>();
//      Dette detteclaire = Dette.NouvelleDette(manu, claire, 45f);
//      dettes.add(detteclaire);
//
//      Operation_Recette operation = new Operation_Recette(date, compte, categorie, libelle, 90f, false, dettes);
//      operation.Entrer_Transactions();






//      Categorie c = Categorie.chargeage(0, new InterfaceMySQL());
//      Categorie l = c.rechercherCategorieDansDescendance("Loisiw");
//      Categorie w = c.rechercherCategorieDansDescendance("XFSWASXZ");



     // new ComparateurApproximatif().compare("aq", "a");
//      for (int i=0; i< 50; i++) {
//      Date t0 = new SimpleDateFormat("yyyy-MM-dd").parse("2006-02-09");
//
//      Calendar cal = new GregorianCalendar();
//      cal.setTime(t0);
//      Date t1 = new Date();
//
//      while (cal.getTime().before(t1)) {
//        TelechargeurDeTaux tel = new TelechargeurDeTaux();
//        try {
//          tel.insererTauxDansLaTable(tel.telechargerTauxPourDate(cal.getTime()), new InterfaceMySQL());
////          TelechargeurDeTaux.Taux taux = tel.telechargerTauxPourDate(cal.getTime());
//  //        System.out.println(String.format("%s - %f / %f", taux.Date,  taux.euroEnPounds, taux.poundsEnEuro));
//        } catch (MonException e) {
//
//          System.out.println(String.format("Date ratee : %s", cal.getTime().toString()));
//          System.out.println(e.getMessage());
//        }
//        cal.add(Calendar.DAY_OF_YEAR, 1);
//      }
//      }


        return ;
    }
}
